Combining gyromouse input and touch input for navigation in an augmented and/or virtual reality environment

ABSTRACT

A system for combining a gyromouse input with a touch surface input in an augmented reality (AR) environment and/or a virtual reality (VR) environment, a virtual display of virtual items and/or features may be adjusted in response to movement of the gyromouse combined with touch inputs, or touch and drag inputs, received on a touch surface of the gyromouse. Use of the gyromouse in the AR/VR environment may allow touch screen capabilities to be accurately projected into a three dimensional virtual space, providing a controller having improved functionality and utility in the AR/VR environment, and enhancing the user&#39;s experience.

CROSS REFERENCE TO RELATED APPLICATION(S)

This application is a Non-Provisional of, and claims priority to, U.S.Provisional Application No. 62/334,786, filed on May 11, 2016, which isincorporated by reference herein in its entirety.

FIELD

This document relates, generally, to the processing of inputs in anaugmented reality and/or a virtual reality environment.

BACKGROUND

An augmented reality (AR) and/or a virtual reality (VR) system maygenerate a three-dimensional (3D) immersive environment. A user mayexperience the augmented and/or virtual environment through interactionwith various electronic devices, such as, for example, a helmet or otherhead mounted device including a display, glasses or goggles that a userlooks through when viewing a display device, gloves fitted with sensors,external handheld devices that include sensors, and other suchelectronic devices. Once immersed in the augmented and/or virtualenvironment, the user may interact in the virtual environment indifferent ways for selection and/or manipulation of virtual objects andother such interactions in the virtual environment. For example, theuser may provide input through manipulation of an external electronicdevice, eye gaze, physical movement and/or gestures, and the like tointeract with, personalize and control the virtual environment.

SUMMARY

In one aspect, a method may include generating, in a head mounteddisplay device operating in an ambient environment, a virtualenvironment; setting an anchor point in a virtual display of a virtualobject displayed in the virtual environment in response to a selectioninput received from a controller that is operably coupled to the headmounted display device; receiving, from the controller, a first inputimplementing a first input mode; adjusting an arrangement of a pluralityof virtual features associated with the virtual display of the virtualobject in response to the first input, a virtual display area of thevirtual display being less than a display area needed to display all ofthe plurality of virtual features simultaneously; receiving, from thecontroller, a second input implementing a second input mode, the secondinput mode being different than the first input mode; and determiningwhether to ignore the second input or to execute an action in thevirtual environment in response to the second input based on a set ofpreviously defined rules.

In another aspect, a computing device may include a memory storingexecutable instructions, and a processor configured to execute theinstructions. The instructions may cause the computing device to:display a virtual environment on a display of a head mounted electronicdevice worn by a user and operating in an ambient environment; set ananchor point in a virtual display of a virtual object displayed in thevirtual environment in response to detecting selection input receivedfrom a controller that is operably coupled to the head mountedelectronic device; receive, from the controller, a first inputimplementing a first input mode; adjust an arrangement of a plurality ofvirtual features associated with the virtual display of the virtualobject in response to the first input, a virtual display area of thevirtual display being less than a display area needed to display all ofthe plurality of virtual features simultaneously; receive, from thecontroller, a second input implementing a second input mode, the secondinput mode being different than the first input mode; and determiningwhether to ignore the second input or to execute an action in thevirtual environment in response to the second input based on a set ofpreviously defined rules.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features will beapparent from the description and drawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an example implementation of a virtual reality systemincluding a head mounted display and a handheld electronic device, inaccordance with implementations as described herein.

FIGS. 2A-2C, 3A-3C, 4A-4C, 5A-5H and 6A-6D illustrate exampleimplementations of use of a gyromouse controller combined with a touchsurface input in an augmented reality and/or virtual realityenvironment, in accordance with implementations described herein.

FIGS. 7A and 7B are perspective views of an example head mounteddisplay, in accordance with implementations as described herein.

FIG. 8 is a block diagram of a virtual reality system, in accordancewith implementations as described herein.

FIG. 9 is a flowchart of a method in accordance with implementations asdescribed herein.

FIG. 10 shows an example of a computer device and a mobile computerdevice that can be used to implement the techniques described herein.

DETAILED DESCRIPTION

A user immersed in a virtual environment wearing, for example, a headmounted display (HMD) device may explore the virtual environment andinteract with the virtual environment through various different types ofinputs including, for example, manipulation of an electronic deviceseparate from the HMD and/or manipulation of the HMD itself, and/or eyeand/or head directional gaze, and/or head movement and/or hand/armgestures, and the like. The user may manipulate a handheld electronicdevice, or controller, together with the HMD, to cause a desired actionin the virtual environment. In particular, in some situations, a usermay manipulate a controller in a variety of different ways, such as, forexample touch inputs to a touch surface of the controller, manipulationof input buttons and/or switches on the controller, physical movement ofthe controller itself, and the like, to provide input to be implementedin the virtual environment. This capability may provide flexibility andconvenience in providing user input, and may enhance the user's virtualexperience, particularly in instances in which a visual size of thecontent to be displayed to the user in the virtual environment exceedsthe area that can be viewed by the user. In some instances, thesemultiple input modes available using the same controller, such as, forexample, a gyromouse, may generate some ambiguity and/or unintended userinputs when a user, for example, inadvertently moves or gestures withthe controller while inputting a touch input on the touch surface of thecontroller, inadvertently moves a touch on the touch surface whilemaking an input via a physical movement or gesture of the controller,and the like.

In a system and method, in accordance with implementations describedherein, a set of predefined rules, or an algorithm, may be applied toinputs received via a controller. These predefined rules or algorithmmay allow a user's intended input to be more accurately determined, anda user's intended interaction in the virtual environment may beaccurately implemented by the system. A system and method, in accordancewith implementations described herein, may also allow for usermanipulation of a virtual display of virtual objects, features, optionsand the like when the virtual objects, features, options and the likeexceed or fall outside of the available virtual display area by, forexample, scrolling, zooming in and out, and the like, using, for examplea controller having a touch input surface, and also having thecapability to provide position and orientation information of thecontroller relative to the virtual display.

In the example implementation shown in FIG. 1, a user wearing an HMD 100is holding a portable handheld electronic device 102. The portablehandheld electronic device 102 may be, for example, a gyromouse, asmartphone, or other type of controller that may be paired with, andcommunicate with, the HMD 100 for interaction in the immersive virtualexperience generated by the HMD 100. In some implementations, a sixdegree of freedom (6DOF) position and orientation of the handheldelectronic device 102 may be tracked based on various sensors includedin the device 102, such as, for example, an inertial measurement unitincluding, for example, an accelerometer, a gyroscope, a magnetometer,and the like as in a gyromouse, or a smartphone adapted in this manner.In some implementations, a 6DOF position and orientation of the handheldelectronic device 102 may be tracked based on a position of the device102 detected by other sensors in the system, such as, for example imagesensors included on the HMD 100, together with orientation sensorsincluded in the device 102. The handheld electronic device 102 may beoperably coupled with, or paired with the HMD 100 via, for example, awired connection, or a wireless connection such as, for example, a wifior Bluetooth connection, to provide for the exchange of data andcommunication between the device 102 and the HMD 100, allowing thehandheld electronic device 102 to function as a controller. That is, amanipulation of the handheld electronic device 102, such as for examplean input received on a touch surface of the handheld electronic device102, or a physical movement of the handheld electronic device 102, or avirtual ray or beam virtually emitted from the handheld electronicdevice 102 as directed by the user, may be translated into acorresponding interaction, or movement, in the virtual environment.Hereinafter, the handheld electronic device will be referred to as acontroller 102, simply for ease of discussion.

As noted above, in some implementations, the controller 102 may be agyromouse, which may be operable in free space to, for example, select,manipulate and in other manners interact with objects in the virtualenvironment. Use of a controller 102 including gyromouse capability mayessentially allow for relatively accurate projection of touchscreeninput capabilities of a mobile device into a three dimensional (3D)space.

The gyromouse may include, for example, a gyroscope that generates asignal indicating angular movement of the gyromouse that can betranslated into directional movement in the virtual environment. In someimplementations, the gyromouse may also include an accelerometer thatgenerates a signal indicating acceleration of the gyromouse, forexample, acceleration in a direction corresponding to the directionalsignal generated by the gyroscope. In some implementations, thegyromouse may also include a magnetometer that generates a signalindicating relative position of the gyromouse in the real world spacebased on the strength and/or direction of a detected magnetic field. Thedetected three dimensional position of the gyromouse in the real worldspace, together with orientation information related to the gyromouseprovided by the gyroscope and/or accelerometer and/or magnetometer, mayprovide for 6DOF tracking of the gyromouse, so that user manipulation ofthe gyromouse may be translated into an intended interaction in thevirtual environment and/or directed to an intended virtual target in thevirtual environment. In some implementations, the controller 102 may beanother type of portable electronic device such as, for example, asmartphone or other portable handheld device equipped with these typesof sensors, so that a position and an orientation of the controller 102may be tracked, and user manipulation of the controller 102 may betranslated into an intended interaction in the virtual environmentand/or directed to an intended virtual target in the virtualenvironment.

In some implementations, the controller 102 (i.e., a gyromouse, asmartphone, other type of portable electronic device equipped withsensors and the like) may include manipulation devices configured toreceive various different types of user inputs. For example, thecontroller 102 may include a touch surface 108 configured to receive,for example, a touch input, a touch and drag input, a pinch and zoominput and the like. The controller 102 may also include othermanipulation devices 106, such as, for example, one or more buttons, oneor more toggle switches, one or more joysticks, and the like, configuredto receive user inputs.

A controller 102 equipped in this manner may receive user inputs in avariety of different input modes to be translated into correspondinginteractions in the virtual environment. These user input modes mayinclude, for example, a physical movement or gesture of the controller102 detected by the sensors included in the controller 102, a touchinput (including touch and drag, pinch and zoom and the like) detectedby the touch surface of the controller 102, a selection received at oneof the manipulation devices 106 of the controller 102, and other suchinputs. In some implementations, the controller 102 may receive a usercommand including a combination of these modes, or a sequentialapplication of these modes.

An example implementation of a system for combining movement input andtouch input in an augmented reality and/or a virtual reality environmentusing a controller 102 including, for example, gyromouse capabilities,is shown in FIG. 2A. FIG. 2A is a third person view of a user in aphysical space, wearing an HMD 100 and holding a controller 102, whileviewing a virtual display 420 generated by the HMD 100, the virtualdisplay 420 displaying a plurality of virtual objects A, B, C, D, E andF. The virtual display 420 may be viewed by the user in the HMD 100, forexample, on a display in the HMD 100. However, simply for ease ofdiscussion and illustration, the virtual display 420 will be illustratedoutside of the HMD 100 in the following example implementations. Theuser may choose to select one of the virtual objects A-F for interactionand/or manipulation and the like in numerous different manners such as,for example, directing the controller 102 toward the virtual object tobe selected, illustrated by a virtual beam or ray 450 directed from thecontroller 102 toward the virtual object to be selected to provide avisual indication of the direction of the controller 102, directing ahead gaze and/or eye gaze at the virtual object to be selected, usingthe touch surface 108 of the controller 102 to navigate a virtual cursorto the virtual object to be selected, and the like.

In the example shown in FIG. 2B (which is also a third person view ofthe user in the physical space, experiencing the virtual environment 400generated by the HMD 100, with the virtual display 420 illustratedoutside of the HMD 100 for ease of explanation), the user directs avirtual ray 450 from the controller 102 toward the virtual object A by,for example, manipulating the touch surface 108 and/or anothermanipulation device 106 of the controller 102. In this example, thecontroller 102 may be equipped with gyromouse type capabilities asdiscussed above, and/or may be otherwise equipped so that a 6DOFposition and orientation of the controller 102 may be detected andtracked. As this 6DOF tracking may allow the system to detect and trackposition and orientation of the controller 102, the system may processthe detected position and orientation to determine a point ofintersection of the virtual ray 450 with a virtual object to be selectedbased on the direction of the controller 102. As, in some situations,the virtual ray 450 may not actually be visible to the user, in someimplementations, a virtual indicator 455, such as a virtual cursor 455or other type of visual indicator, may be displayed to the user toprovide a visual indicator to the user of the point of intersection ofthe directional ray of the controller 102 and a corresponding virtualobject, prior to actual selection of the virtual object. The user maythen select, for example, the virtual object A, by manipulating thecontroller 102, such as, for example, releasing the touch from the touchsurface 108, releasing the depression of one of the manipulation devices106, and the like.

A number of different virtual objects, features, options and the likemay be available in association with the virtual objects A-F. Forexample, a number n of different virtual objects, features, and the likemay be available in association with the virtual object A. However, itmay not be possible to view all of the virtual objects, features and thelike, for example, features A1 through An, all at the same time withinthe area of the virtual display 420 visible to the user due to, forexample, the size of the virtual display area, the size of the virtualfeatures A1-An, and other such factors. In response to the selection ofthe virtual object A, the system may enlarge and display additionalfeatures A1, A2, A3 and A4, content and the like related to the virtualobject A in the virtual display 420, for interaction with and/ormanipulation by the user, as shown in FIG. 2C. As some of the features,content and the like in addition to the features A1-A4 displayed to theuser, may exceed the area available for viewing by the user, the usermay choose to scroll, navigate or otherwise move through the features,for example, to locate a desired feature, to view the features availablefor making a selection and the like.

In some implementations, the user may cause movement of the featuresA1-An available in association with the selected virtual object A by,for example, pointing at the virtual display 420 to select and/or set ananchor point in a particular portion of the display area, and thenimplementing a physical movement of the controller 102, for example, adownward movement to cause the display of features to scroll downward oran upward movement to cause the display of features to scroll upward,and the like, as shown in FIGS. 3A-3C. FIGS. 3A-3C provide a thirdperson view of the user (specifically, the user's hand, holding thecontroller 102) in the physical space, interacting with virtual contentdisplayed in the virtual environment generated by the HMD 100.

The user may direct a virtual beam 450 at a portion of the virtualdisplay 420 of the selected virtual object A, for example, a bottomportion of the display of the virtual object A, as shown in FIG. 3A.This selection input may, essentially, set an anchor point at theportion of the virtual display 420 at which the virtual beam 450intersects a particular virtual object by, for example, a touch appliedto the touch surface of the controller 108, manipulation of one of theother manipulation devices 106, and the like. Simply for ease ofdiscussion and illustration, hereinafter, this intersection point of thevirtual beam 450 with a particular portion of the virtual display 420will be referred to as the endpoint 455 of the virtual beam 450. Thisanchor point may define a point from which the user may, for example,virtually grasp and hold a corresponding portion of the virtual display420 for movement, manipulation, selection and the like. The user maythen implement, or carry out, or execute, or perform a physical upwardmovement of the controller 102, as shown in FIG. 3B, to cause the listof features A1-An associated with the selected virtual object A toscroll upwards. This upward movement may be sustained until, forexample, the physical movement is terminated or changes direction, thetouch on the touch surface 108 or depression of the manipulation device106 is released, and the like, as shown in FIG. 3C. Downward movement ofthe features A1-An associated with the selected virtual object A may beimplemented by, for example, directing the virtual beam 450 at an upperportion of the display area, setting the anchor point as describedabove, followed by a downward movement of the controller in a similarmanner. Other movement, including scrolling, may be achieved in variousother directions, such as in the left direction, the right direction,diagonal directions and the like in a similar manner.

In some instances, the user may, for example, inadvertently orunintentionally move the controller 102 while intentionally inputting atouch input on the touch surface 108 of the controller 102. Similarly,in some instances, the user may, for example, inadvertently orunintentionally move or drag along the touch surface 108 of thecontroller 102 while intentionally implementing a physical movement ofthe controller 102. To ensure that the system reacts to intentional userinputs, and does not react to unintentional user inputs, in someimplementations, a set of pre-defined rules for responding to thevarious different types of inputs may be implemented by the system tofacilitate the accurate selection of a particular virtual object orvirtual feature and/or action to be taken in the virtual environmentbased on the detected inputs and the set of rules for operation. In someimplementations, the rules for operation, and response to detectedinputs, may be applied to any detected input. In some implementations,the rules for operation, and response to detected inputs, may be appliedwhen a secondary input is detected while a primary input is activated.The rules for operation, and response to detected inputs may be basedon, for example, user preferences, a type of controller in use, aparticular virtual environment and associated context, a particular setof virtual objects, features and the like currently available formanipulation by the user, and the like. The rules for operation mayallow the system to assess the likelihood, or probability, that adetected user input was intentional, and to process the inputaccordingly. In other words, the application of the rules to detecteduser inputs allows the system to categorize inputs. The inputs may becategorized as, for example, intended input, and unintended inputhereinafter. Based on this categorization, unintended input can befiltered out, i.e. ignored, so that the number of inputs that the systemis responsive to can be reduced to intended inputs. In that way,imprecision in the user's input may be filtered out, thus improving theaccuracy of the user's interaction with the system, for example in thesense that only inputs related a current input mode and/or related tointeraction with a specific virtual target in the virtual environmentare processed, while other inputs are filtered out.

In the example shown in FIGS. 3A-3C, the selection input sets the anchorpoint in the virtual display area at the end 455 of the virtual ray 450in response to a touch input on the touch surface 108 of the controller102, and scrolling of the features A1-An is implemented by the system inresponse to physical movement of the controller 102. If, during thephysical movement of the controller 102 shown in FIG. 3B, the user wereto inadvertently apply an unintended touch/drag on the touch surface 108of the controller 102, the system may ignore the detected touch/drag onthe touch surface 108, based on the set of rules established for thisset of inputs. For example, in some implementations, the system mayignore the detected touch/drag on the touch surface 108 if thetouch/drag remains within a pre-defined area 108A of the touch surface108 as shown in FIG. 6A, if a magnitude of the touch/drag input is lessthan a pre-defined threshold, and the like, indicating the touch/draginput was unintentional. In some implementations, if the system detectsthat the touch/drag has moved into an area 108B of the touch surface 108outside of the pre-defined area 108A, the system may determine that thetouch/drag input was intentional. In some implementations, thepre-defined area 108A on the touch surface 108 may be based on, forexample, a set area surrounding an initial touch point 108P on the touchsurface 108 associated with the input. That is, if the initial touchpoint 108P on the touch surface 108 is located as shown in FIG. 6B,rather than as shown in FIG. 6A, the pre-defined area 108A may be basedon the location of the initial touch point 108P.

In some implementations, the user may cause movement of the featuresA1-An available in association with the selected virtual object A by,for example, inputting a selection input by pointing at the display area420 to set an anchor point, and then implementing a touch and drag inputon the touch surface 108 of the controller 102, for example, an upwarddrag on the touch surface 108 to cause the display of features to scrollupward, a downward drag on the touch surface 108 to cause the display offeatures to scroll downward, and the like, as shown in FIGS. 4A-4C.FIGS. 4A-4C provide a third person view of the user (specifically, theuser's hand, holding the controller 102) in the physical space,interacting with virtual content in the virtual environment generated bythe HMD 100.

The user may direct a virtual beam 450 at a portion of the virtualdisplay 420 of the selected virtual object A, for example, a bottomportion of the display of the virtual object A, as shown in FIG. 4A.This may, essentially, set an anchor point at the portion of the displayat which the virtual beam 450 intersects the portion of the virtualdisplay 420 by, for example, a touch applied to the touch surface of thecontroller 108, manipulation of one of the other manipulation devices106, and the like. As noted above, in this example, the end 455 of thevirtual beam 450 shown in FIGS. 4A-4C illustrates the intersection ofthe virtual beam 450 with the virtual display 420. The user may theninput a drag movement along the touch surface 108 of the controller 102,as shown in FIG. 4B, to cause the list of features A1-An associated withthe selected virtual object A to scroll upwards. This upward movementmay be sustained until, for example, the drag input is terminated orchanges direction, the touch on the touch surface 108 or depression ofthe manipulation device 106 is released, and the like, as shown in FIG.4C. Downward movement of the features A1-An associated with the selectedvirtual object A may be implemented by, for example, directing thevirtual beam 450 at an upper portion of the virtual display 420 andsetting the anchor point as described above, and implementing a downwarddrag input on the touch surface 108 of the controller 102 in a similarmanner. Other movement, including scrolling, may be achieved in variousother directions, such as in the left direction, the right direction,diagonal directions and the like in a similar manner.

As noted above, in some instances, the user may, for example,inadvertently or unintentionally move the controller 102 whileintentionally inputting a touch input on the touch surface 108 of thecontroller 102. If, during the input of the touch and drag input on thetouch surface 108 of the controller 102 shown in FIG. 4B, the user wereto inadvertently cause a physical movement or gesture with thecontroller 102, the system may ignore the detected physical movement ofthe controller 102, based on a set of pre-defined rules for respondingto the various different types of inputs, so that only the intended userinputs cause corresponding actions in the virtual environment. Forexample, in some implementations, the system may ignore a detectedphysical movement of the controller 102 if, for example, a magnitude ordirection of the detected physical movement of the controller 102, froma position P1 to a position P2, is less than a pre-defined threshold D1or within a predefined range D1, as shown in FIG. 6C, indicating thephysical movement of the controller 102 was unintentional. In someimplementations, if the system detects that the magnitude of thephysical movement of the controller 102, from the position P1 to theposition P2, exceeds the pre-defined range D1, as shown in FIG. 6D, thesystem may determine that the physical movement of the controller 102was intentional.

In some implementations, the user may cause movement of the featuresA1-An available in association with the selected virtual object A by,for example, manipulating a virtual vertical scroll bar 460 and/or avirtual horizontal scroll bar 470 displayed in the display area of thevirtual display 420, as shown in FIGS. 5A-5G. FIGS. 5A-5F provide athird person view of the user (specifically, the user's hand, holdingthe controller 102) in the physical space, interacting with virtualcontent displayed in the virtual environment generated by the HMD 100.

In some implementations, the user may input a selection input bypointing and selecting a virtual up arrow 461, a virtual down arrow 462,a virtual left arrow 471, or a virtual right arrow 472 to generate acorresponding movement of the features A1-An. In the example shown inFIG. 5A, the user directs a virtual beam 450 at a portion of the virtualdisplay 420 of the selected virtual object A, for example, the downarrow 462 in the vertical scroll bar 460, and selects the down arrow 462for input by, for example, a touch applied to the touch surface 108 ofthe controller 102, manipulation of one of the other manipulationdevices 106, and the like. The user may then virtually select (e.g.,virtually click on) the down arrow 462 by, for example, one or moretouch inputs applied to the touch surface 108 of the controller 102, oneor more depressions of one of the manipulation devices 106 and the like,as shown in FIG. 5B, to cause the list of features A1-An associated withthe selected virtual object A to scroll in a corresponding direction.Downward movement of the features A1-An associated with the selectedvirtual object A may be implemented by, for example, directing thevirtual beam 450 at the upper arrow 461 in the vertical scroll bar 460of the display area and virtually selecting (e.g., virtually clickingon) the up arrow 461 as described above. Movement of the features A1-Anassociated with the selected virtual object A in other directions, forexample, to the left and the right, may be implemented by, for example,directing the virtual beam 450 at the left arrow 471 or the right arrow472 in the horizontal scroll bar 470 of the display area and virtuallyselecting (e.g., virtually clicking on) the selected arrow 471/472 asdescribed above to generate movement of the features A1-An in acorresponding direction. A set of pre-defined rules, as discussed abovein detail with respect to FIGS. 6A-6D, may be applied to the detectionof the various inputs described above with respect to FIGS. 5A-5B, sothat the system takes action in response to intended inputs, and doesnot take action in response to unintended inputs.

In some implementations, similar movement may be achieved by virtualmovement of a virtual vertical indicator 463 in the virtual verticalscroll bar 460 and/or movement of a virtual horizontal indicator 473 inthe virtual horizontal scroll bar 470 to generate a correspondingmovement of the features A1-An. In this example, the user may set ananchor point at the portion of the virtual display 420 at which the end455 of the virtual beam 450 is positioned (in this example, on thevertical indicator 463 in the vertical scroll bar 460) by, for example,a touch applied to the touch surface of the controller 108, manipulationof one of the other manipulation devices 106, and the like. As shown inFIG. 5D, the user may then input a drag movement along the touch surface108 of the controller 102, or perform a physical movement of thecontroller 102 as described above, to cause the list of features A1-Anassociated with the selected virtual object A to scroll. This movementmay be sustained until, for example, the detected drag input isterminated or changes direction, the detected physical movement of thecontroller 102 is terminated or changes direction, the detected touch onthe touch surface 108 or depression of the manipulation device 106 isreleased, and the like. Downward movement of the features A1-Anassociated with the selected virtual object A may be implemented by, forexample, directing the virtual beam 450 at the vertical indicator 463 inthe vertical scroll bar 460 and implementing a downward drag input onthe touch surface 108 of the controller 102, or implementing a downwardphysical movement of the controller 102, in a similar manner. Movementof the features A1-An associated with the selected virtual object A inother directions, for example, to the left and the right, may beimplemented by, for example, directing the virtual beam 450 at thehorizontal indicator 473 in the horizontal scroll bar 470 of the displayarea and implementing a drag input in the left or right direction on thetouch surface 108 of the controller 102, or implementing a physicalmovement of the controller 102 in the left or right direction, in asimilar manner to generate movement of the features A1-An in acorresponding direction. A set of pre-defined rules, as discussed abovein detail with respect to FIGS. 6A-6D, may be applied to the detectionof the various inputs described above with respect to FIGS. 5C-5D, sothat the system takes action in response to intended user inputs, anddoes not take action in response to unintended inputs.

In some implementations, similar movement may be achieved by input(s)applied in areas 464A/464B above or below the virtual vertical indicator463 and/or input(s) applied in areas 474A/474B to the right or left ofthe virtual horizontal indicator 473 to generate a correspondingmovement of the features A1-An. In the example shown in FIG. 5E, theuser directs a virtual beam 450 at a portion of the virtual display 420of the selected virtual object A, for example, the area 464B in thevertical scroll bar 460, and selects the area 464B for input by, forexample, a touch applied to the touch surface 108 of the controller 102,manipulation of one of the other manipulation devices 106, and the like.The user may then virtually select (e.g., virtually click on) the area464B by, for example, one or more touch inputs applied to the touchsurface 108 of the controller 102, one or more depressions of one of themanipulation devices 106 and the like, as shown in FIG. 5F, to cause thelist of features A1-An associated with the selected virtual object A toscroll in a corresponding direction. Downward movement of the featuresA1-An associated with the selected virtual object A may be implementedby, for example, directing the virtual beam 450 at the area 464A in thevertical scroll bar 460 of the display area and virtually selecting(e.g., virtually clicking on) the area 464A as described above. Movementof the features A1-An associated with the selected virtual object A inother directions, for example, to the left and the right, may beimplemented by, for example, directing the virtual beam 450 at one ofthe areas 474A or 474B in the horizontal scroll bar 470 of the displayarea and virtually selecting (e.g., virtually clicking on) the selectedarea 474A or 474B as described above to generate movement of thefeatures A1-An in a corresponding direction. A set of pre-defined rules,as discussed above in detail with respect to FIGS. 6A-6D, may be appliedto the detection of the various inputs described above with respect toFIGS. 5E-5F, so that the system takes action in response to intendeduser inputs, and does not take action in response to unintended userinputs.

In some implementations, the virtual features displayed within thedisplay area of the virtual display 420 may be adjusted or changed by,for example, skipping ahead (or back), or jumping ahead (or back),rather than scrolling as described above. For example, as shown in FIG.5G, a virtual content indicator 480 may be displayed to the user. Thevirtual content indicator 480 may provide a visual indication to theuser that virtual features, in addition to the virtual features A1-A4displayed on the virtual display 420, are available to the user, inassociated with the particular virtual object A selected. In the exampleshown in FIG. 5G, the example virtual content indicator 480 includes aplurality of virtual content buttons, each of the virtual contentbuttons corresponding to a particular spot, or bookmark, in the list ofvirtual features A1-An available in association with the selectedvirtual object A. In this example, virtual features A1-A4 are displayed,and a first virtual content button 481 is highlighted, providing avisual indication to the user that the displayed virtual features A1-Anare at essentially the beginning of the list of virtual features A1-Anavailable in association with the selected virtual object A.

In the example shown in FIG. 5G, to move, or skip, or jump forward inthe list of virtual features A1-An, the user may direct the virtual beam450 toward another of the virtual content buttons in the virtual contentindicator 480, such as, for example, a third virtual content button 483,and may select the third virtual content button 483, for example, in themanner described above. This may cause the system to move, or skip, orjump ahead in the list of virtual features A1-An (rather thansequentially scrolling through the list of virtual features A1-An) to aposition in the list of virtual features corresponding to the thirdvirtual content button 483, as shown in FIG. 5H. In this example, thethird content button 483 is highlighted (and the first content button481 is no longer highlighted) to provide a visual indication to the userof a position within the list of virtual features A1-An associated withthe selected virtual object A, and the virtual features A9-A12 are nowdisplayed to the user on the virtual display 420. The user may move, orskip, or jump back, in the list of virtual features A1-An, in a similarmanner. A set of pre-defined rules, as discussed above in detail withrespect to FIGS. 6A-6D, may be applied to the detection of the variousinputs described above with respect to FIGS. 5G-5H, so that the systemtakes action in response to intended user inputs, and does not takeaction in response to unintended user inputs

The example systems and methods have been described above with respectto moving and/or scrolling various virtual items and or featuresincluded in virtual lists, menus and the like displayed in an augmentedand/or virtual reality environment, simply for ease of discussion andillustration. However, similar principles may be applied in navigatingsituations in which items, features and the like exceed an availablespace for display, and may also be applied to scaling, zooming in and/orout, volume control and other such features.

FIGS. 7A and 7B are perspective views of an example HMD, such as, forexample, the HMD 100 worn by the user in FIG. 1. FIG. 8 is a blockdiagram of an augmented reality and/or virtual reality system includinga first electronic device in communication with a second electronicdevice. The first electronic device 300 may be, for example an HMDgenerating an augmented and/or virtual reality environment, and thesecond electronic device 302 may be, for example, a controller includingthe capabilities of gyromouse as discussed above.

As shown in FIGS. 7A and 7B, the example HMD may include a housing 110coupled to a frame 120, with an audio output device 130 including, forexample, speakers mounted in headphones, coupled to the frame 120. InFIG. 7B, a front portion 110 a of the housing 110 is rotated away from abase portion 110 b of the housing 110 so that some of the componentsreceived in the housing 110 are visible. A display 140 may be mounted onan interior facing side of the front portion 110 a of the housing 110.Lenses 150 may be mounted in the housing 110, between the user's eyesand the display 140 when the front portion 110 a is in the closedposition against the base portion 110 b of the housing 110. In someimplementations, the HMD 100 may include a sensing system 160 includingvarious sensors such as, for example, audio sensor(s), image/lightsensor(s), positional sensors (e.g., inertial measurement unit includinggyroscope and accelerometer), and the like. The HMD 100 may also includea control system 170 including a processor 190 and various controlsystem devices to facilitate operation of the HMD 100.

In some implementations, the HMD 100 may include a camera 180 to capturestill and moving images. The images captured by the camera 180 may beused to help track a physical position of the user and/or the controller102, and/or may be displayed to the user on the display 140 in a passthrough mode. In some implementations, the HMD 100 may include a gazetracking device 165 including one or more image sensors 165A to detectand track an eye gaze of the user. In some implementations, the HMD 100may be configured so that the detected gaze is processed as a user inputto be translated into a corresponding interaction in the augmentedreality and/or virtual reality environment.

As shown in FIG. 8, the first electronic device 300 may include asensing system 370 and a control system 380, which may be similar to thesensing system 160 and the control system 170, respectively, shown inFIGS. 7A and 7B. The sensing system 370 may include, for example, alight sensor, an audio sensor, an image sensor, a distance/proximitysensor, a positional sensor, and/or other sensors and/or differentcombination(s) of sensors, including, for example, an image sensorpositioned to detect and track the user's eye gaze. The control system380 may include, for example, a power/pause control device, audio andvideo control devices, an optical control device, a transition controldevice, and/or other such devices and/or different combination(s) ofdevices. The sensing system 370 and/or the control system 380 mayinclude more, or fewer, devices, depending on a particularimplementation, and may have a different physical arrangement thatshown. The first electronic device 300 may also include a processor 390in communication with the sensing system 370 and the control system 380,a memory 385, and a communication module 395 providing for communicationbetween the first electronic device 300 and another, external device,such as, for example, the second electronic device 302.

The second electronic device 302 may include a communication module 306providing for communication between the second electronic device 302 andanother, external device, such as, for example, the first electronicdevice 300. The second electronic device 302 may include a sensingsystem 304 including an image sensor and an audio sensor, such as isincluded in, for example, a camera and microphone, an inertialmeasurement unit, a touch sensor such as is included in a touchsensitive surface of a controller, or smartphone, and other such sensorsand/or different combination(s) of sensors. A processor 309 may be incommunication with the sensing system 304 and a control unit 305 of thesecond electronic device 302, the control unit 305 having access to amemory 308 and controlling overall operation of the second electronicdevice 302.

A method 900 of combining gyromouse input and touch input in anaugmented reality environment and/or a virtual reality environment, inaccordance with implementations described herein, is shown in FIG. 9.

After initiating a virtual and/or augmented reality experience (block910), a starting point may be set in response to a received user inputindicating a selected starting point (blocks 920, 930). This may be, forexample, the detection by the system of a virtual beam directed at aparticular portion of the virtual display as shown in FIGS. 3A, 4A, 5A,5C, 5E and 5G. Selected features, items and the like may then be moved,scrolled, scaled and the like in response to a detected user adjustmentinput (blocks 940, 950), and displayed to the user in the virtualenvironment in response to termination of the detected user adjustmentinput (blocks 960, 970). This adjustment, or moving, or scaling and thelike, may be done, for example, as discussed in detail above withrespect to FIGS. 3B, 4B, 5B, 5D, 5F and 5H. The process may continueuntil the virtual experience is terminated (block 980).

FIG. 10 shows an example of a computer device 1000 and a mobile computerdevice 1050, which may be used with the techniques described here.Computing device 1000 includes a processor 1002, memory 1004, a storagedevice 1006, a high-speed interface 1008 connecting to memory 1004 andhigh-speed expansion ports 1010, and a low speed interface 1012connecting to low speed bus 1014 and storage device 1006. Each of thecomponents 1002, 1004, 1006, 1008, 1010, and 1012, are interconnectedusing various busses, and may be mounted on a common motherboard or inother manners as appropriate. The processor 1002 can processinstructions for execution within the computing device 1000, includinginstructions stored in the memory 1004 or on the storage device 1006 todisplay graphical information for a GUI on an external input/outputdevice, such as display 1016 coupled to high speed interface 1008. Inother implementations, multiple processors and/or multiple buses may beused, as appropriate, along with multiple memories and types of memory.Also, multiple computing devices 1000 may be connected, with each deviceproviding portions of the necessary operations (e.g., as a server bank,a group of blade servers, or a multi-processor system).

The memory 1004 stores information within the computing device 1000. Inone implementation, the memory 1004 is a volatile memory unit or units.In another implementation, the memory 1004 is a non-volatile memory unitor units. The memory 1004 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 1006 is capable of providing mass storage for thecomputing device 1000. In one implementation, the storage device 1006may be or contain a computer-readable medium, such as a floppy diskdevice, a hard disk device, an optical disk device, or a tape device, aflash memory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 1004, the storage device1006, or memory on processor 1002.

The high speed controller 1008 manages bandwidth-intensive operationsfor the computing device 1000, while the low speed controller 1012manages lower bandwidth-intensive operations. Such allocation offunctions is exemplary only. In one implementation, the high-speedcontroller 1008 is coupled to memory 1004, display 1016 (e.g., through agraphics processor or accelerator), and to high-speed expansion ports1010, which may accept various expansion cards (not shown). In theimplementation, low-speed controller 1012 is coupled to storage device1006 and low-speed expansion port 1014. The low-speed expansion port,which may include various communication ports (e.g., USB, Bluetooth,Ethernet, wireless Ethernet) may be coupled to one or more input/outputdevices, such as a keyboard, a pointing device, a scanner, or anetworking device such as a switch or router, e.g., through a networkadapter.

The computing device 1000 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 1020, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 1024. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 1022. Alternatively, components from computing device 1000 maybe combined with other components in a mobile device (not shown), suchas device 1050. Each of such devices may contain one or more ofcomputing device 1000, 1050, and an entire system may be made up ofmultiple computing devices 1000, 1050 communicating with each other.

Computing device 1050 includes a processor 1052, memory 1064, aninput/output device such as a display 1054, a communication interface1066, and a transceiver 1068, among other components. The device 1050may also be provided with a storage device, such as a microdrive orother device, to provide additional storage. Each of the components1050, 1052, 1064, 1054, 1066, and 1068, are interconnected using variousbuses, and several of the components may be mounted on a commonmotherboard or in other manners as appropriate.

The processor 1052 can execute instructions within the computing device1050, including instructions stored in the memory 1064. The processormay be implemented as a chipset of chips that include separate andmultiple analog and digital processors. The processor may provide, forexample, for coordination of the other components of the device 1050,such as control of user interfaces, applications run by device 1050, andwireless communication by device 1050.

Processor 1052 may communicate with a user through control interface1058 and display interface 1056 coupled to a display 1054. The display1054 may be, for example, a TFT LCD (Thin-Film-Transistor Liquid CrystalDisplay) or an OLED (Organic Light Emitting Diode) display, or otherappropriate display technology. The display interface 1056 may compriseappropriate circuitry for driving the display 1054 to present graphicaland other information to a user. The control interface 1058 may receivecommands from a user and convert them for submission to the processor1052. In addition, an external interface 1062 may be provide incommunication with processor 1052, so as to enable near areacommunication of device 1050 with other devices. External interface 1062may provide, for example, for wired communication in someimplementations, or for wireless communication in other implementations,and multiple interfaces may also be used.

The memory 1064 stores information within the computing device 1050. Thememory 1064 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 1074 may also be provided andconnected to device 1050 through expansion interface 1072, which mayinclude, for example, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 1074 may provide extra storage spacefor device 1050, or may also store applications or other information fordevice 1050. Specifically, expansion memory 1074 may includeinstructions to carry out or supplement the processes described above,and may include secure information also. Thus, for example, expansionmemory 1074 may be provide as a security module for device 1050, and maybe programmed with instructions that permit secure use of device 1050.In addition, secure applications may be provided via the SIMM cards,along with additional information, such as placing identifyinginformation on the SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 1064, expansionmemory 1074, or memory on processor 1052, that may be received, forexample, over transceiver 1068 or external interface 1062.

Device 1050 may communicate wirelessly through communication interface1066, which may include digital signal processing circuitry wherenecessary. Communication interface 1066 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 1068. In addition, short-range communication may occur, suchas using a Bluetooth, Wi-Fi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 1070 mayprovide additional navigation- and location-related wireless data todevice 1050, which may be used as appropriate by applications running ondevice 1050.

Device 1050 may also communicate audibly using audio codec 1060, whichmay receive spoken information from a user and convert it to usabledigital information. Audio codec 1060 may likewise generate audiblesound for a user, such as through a speaker, e.g., in a handset ofdevice 1050. Such sound may include sound from voice telephone calls,may include recorded sound (e.g., voice messages, music files, etc.) andmay also include sound generated by applications operating on device1050.

The computing device 1050 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 1080. It may also be implemented as part of a smartphone 1082, personal digital assistant, or other similar mobile device.

Various implementations of the systems and techniques described here canbe reali10ed in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

In some implementations, the computing devices depicted in FIG. 10 caninclude sensors that interface with a virtual reality (VR headset/HMDdevice 1090). For example, one or more sensors included on a computingdevice 1050 or other computing device depicted in FIG. 10, can provideinput to VR headset 1090 or in general, provide input to a VR space. Thesensors can include, but are not limited to, a touchscreen,accelerometers, gyroscopes, pressure sensors, biometric sensors,temperature sensors, humidity sensors, and ambient light sensors. Thecomputing device 1050 can use the sensors to determine an absoluteposition and/or a detected rotation of the computing device in the VRspace that can then be used as input to the VR space. For example, thecomputing device 1050 may be incorporated into the VR space as a virtualobject, such as a controller, a laser pointer, a keyboard, a weapon,etc. Positioning of the computing device/virtual object by the user whenincorporated into the VR space can allow the user to position thecomputing device so as to view the virtual object in certain manners inthe VR space. For example, if the virtual object represents a laserpointer, the user can manipulate the computing device as if it were anactual laser pointer. The user can move the computing device left andright, up and down, in a circle, etc., and use the device in a similarfashion to using a laser pointer.

In some implementations, one or more input devices included on, orconnect to, the computing device 1050 can be used as input to the VRspace. The input devices can include, but are not limited to, atouchscreen, a keyboard, one or more buttons, a trackpad, a touchpad, apointing device, a mouse, a trackball, a joystick, a camera, amicrophone, earphones or buds with input functionality, a gamingcontroller, or other connectable input device. A user interacting withan input device included on the computing device 1050 when the computingdevice is incorporated into the VR space can cause a particular actionto occur in the VR space.

In some implementations, a touchscreen of the computing device 1050 canbe rendered as a touchpad in VR space. A user can interact with thetouchscreen of the computing device 1050. The interactions are rendered,in VR headset 1090 for example, as movements on the rendered touchpad inthe VR space. The rendered movements can control virtual objects in theVR space.

In some implementations, one or more output devices included on thecomputing device 1050 can provide output and/or feedback to a user ofthe VR headset 1090 in the VR space. The output and feedback can bevisual, tactical, or audio. The output and/or feedback can include, butis not limited to, vibrations, turning on and off or blinking and/orflashing of one or more lights or strobes, sounding an alarm, playing achime, playing a song, and playing of an audio file. The output devicescan include, but are not limited to, vibration motors, vibration coils,pie10oelectric devices, electrostatic devices, light emitting diodes(LEDs), strobes, and speakers.

In some implementations, the computing device 1050 may appear as anotherobject in a computer-generated, 3D environment. Interactions by the userwith the computing device 1050 (e.g., rotating, shaking, touching atouchscreen, swiping a finger across a touch screen) can be interpretedas interactions with the object in the VR space. In the example of thelaser pointer in a VR space, the computing device 1050 appears as avirtual laser pointer in the computer-generated, 3D environment. As theuser manipulates the computing device 1050, the user in the VR spacesees movement of the laser pointer. The user receives feedback frominteractions with the computing device 1050 in the VR environment on thecomputing device 1050 or on the VR headset 1090.

In some implementations, a computing device 1050 may include atouchscreen. For example, a user can interact with the touchscreen in aparticular manner that can mimic what happens on the touchscreen withwhat happens in the VR space. For example, a user may use apinching-type motion to 10oom content displayed on the touchscreen. Thispinching-type motion on the touchscreen can cause information providedin the VR space to be 10oomed. In another example, the computing devicemay be rendered as a virtual book in a computer-generated, 3Denvironment. In the VR space, the pages of the book can be displayed inthe VR space and the swiping of a finger of the user across thetouchscreen can be interpreted as turning/flipping a page of the virtualbook. As each page is turned/flipped, in addition to seeing the pagecontents change, the user may be provided with audio feedback, such asthe sound of the turning of a page in a book.

In some implementations, one or more input devices in addition to thecomputing device (e.g., a mouse, a keyboard) can be rendered in acomputer-generated, 3D environment. The rendered input devices (e.g.,the rendered mouse, the rendered keyboard) can be used as rendered inthe VR space to control objects in the VR space.

Computing device 1000 is intended to represent various forms of digitalcomputers and devices, including, but not limited to laptops, desktops,workstations, personal digital assistants, servers, blade servers,mainframes, and other appropriate computers. Computing device 1050 isintended to represent various forms of mobile devices, such as personaldigital assistants, cellular telephones, smart phones, and other similarcomputing devices. The components shown here, their connections andrelationships, and their functions, are meant to be exemplary only, andare not meant to limit implementations of the inventions describedand/or claimed in this document.

A number of embodiments have been described. Nevertheless, it will beunderstood that various modifications may be made without departing fromthe spirit and scope of the specification.

In addition, the logic flows depicted in the figures do not require theparticular order shown, or sequential order, to achieve desirableresults. In addition, other steps may be provided, or steps may beeliminated, from the described flows, and other components may be addedto, or removed from, the described systems. Accordingly, otherembodiments are within the scope of the following claims.

While certain features of the described implementations have beenillustrated as described herein, many modifications, substitutions,changes and equivalents will now occur to those skilled in the art. Itis, therefore, to be understood that the appended claims are intended tocover all such modifications and changes as fall within the scope of theimplementations. It should be understood that they have been presentedby way of example only, not limitation, and various changes in form anddetails may be made. Any portion of the apparatus and/or methodsdescribed herein may be combined in any combination, except mutuallyexclusive combinations. The implementations described herein can includevarious combinations and/or sub-combinations of the functions,components and/or features of the different implementations described.

What is claimed is:
 1. A method, comprising: generating, in a headmounted display device operating in an ambient environment, a virtualenvironment; setting an anchor point in a virtual display of a virtualobject displayed in the virtual environment in response to a selectioninput received from a controller that is operably coupled to the headmounted display device; receiving, from the controller, a first inputimplementing a first input mode; adjusting an arrangement of a pluralityof virtual features associated with the virtual display of the virtualobject in response to the first input, a virtual display area of thevirtual display being less than a display area needed to display all ofthe plurality of virtual features simultaneously; receiving, from thecontroller, a second input implementing a second input mode, the secondinput mode being different than the first input mode; and determiningwhether to ignore the second input or to execute an action in thevirtual environment response to the second input based on a set ofpreviously defined rules.
 2. The method of claim 1, setting an anchorpoint in a virtual display of a virtual object in response to aselection input received from a controller including: detecting anintersection point of a virtual beam directed from the controller with aportion of the virtual display; and setting the anchor point at thedetected intersection point in response to the selection input, theselection input including a detected activation of a manipulation deviceof the controller.
 3. The method of claim 1, wherein the first inputmode is a touch input on a touch surface of the controller, and thesecond input mode is a physical movement of the controller, and whereinthe selection input is detected in response to an activation of amanipulation device of the controller.
 4. The method of claim 3,adjusting an arrangement of a plurality of virtual features associatedwith the virtual display of the virtual object in response to the firstinput including: moving through the plurality of virtual features,including one of: sequentially scrolling through the plurality ofvirtual features, in a direction corresponding to the first input; orjumping to one or more virtual features, of the plurality of virtualfeatures, corresponding to the first input, the first inputcorresponding to a selection of a virtual content button, the virtualcontent button corresponding to a set point in a sequential listing ofthe plurality of virtual features; and displaying a combination ofvirtual features, of the plurality of virtual features, on the virtualdisplay of the virtual object, the displayed combination of virtualfeatures being different from a combination of virtual features, of theplurality of virtual features, displayed before the moving.
 5. Themethod of claim 3, setting an anchor point in a virtual display of avirtual object in response to a selection input received from acontroller including: detecting an intersection point of a virtual beamdirected from the controller with one of a plurality of vertical scrollarrows positioned in a vertical scroll bar of the virtual display, orwith one of a plurality of horizontal scroll arrows positioned in ahorizontal scroll bar of the virtual display, or within a designatedarea of the vertical scroll bar, or within a designated area of thehorizontal scroll bar; setting the anchor point corresponding to thedetected intersection point; and scrolling through the plurality ofvirtual features associated with the virtual display in response to atouch input on the touch surface of the controller, the scrollingprogressing in a direction corresponding to the anchor point and thetouch input.
 6. The method of claim 5, scrolling through the pluralityof virtual features including: sequentially scrolling through theplurality of virtual features in response to the touch input;maintaining the scrolling while the touch input on the touch surface ofthe controller is maintained; and terminating the scrolling when arelease of the touch on the touch surface of the controller is detected.7. The method of claim 5, the touch input on the touch surface of thecontroller being a series of tap inputs on the touch surface of thecontroller, the scrolling through the plurality of virtual featuresincluding sequentially scrolling, by a defined amount, through theplurality of virtual features in response to each tap input detected onthe touch surface.
 8. The method of claim 3, setting an anchor point ina virtual display in response to a selection input received from acontroller including: detecting an intersection point of a virtual beamdirected from the controller with one of a top portion of the virtualdisplay, a bottom portion of the virtual display, a left portion of thevirtual display, a right portion of the virtual display, a verticalmovement bar positioned in a vertical scroll bar of the virtual display,or a horizontal movement bar positioned in a horizontal scroll bar ofthe virtual display, and setting the anchor point at the detectedintersection point in response to a touch input on the touch surface ofthe controller; scrolling through the plurality of virtual featuresassociated with the virtual object in response to a drag input on thetouch surface, the plurality of virtual features displayed on thevirtual display scrolling from the anchor point in a directioncorresponding to a direction of the drag input on the touch surface ofthe controller; and terminating the scrolling in response to a detectedrelease of the touch and drag input on the touch surface of thecontroller.
 9. The method of claim 3, wherein determining whether toignore the second input or execute an action in the virtual environmentresponse to the second input based on a set of previously defined rulesincludes: ignoring the second input when the physical movement of thecontroller is within a previously defined range; and executing an actionin the virtual environment in response to the second input when thephysical movement of the controller extends beyond the previouslydefined range.
 10. The method of claim 3, wherein adjusting anarrangement of the plurality of virtual features associated with thevirtual display of the virtual object in response to the first inputincludes scrolling through the plurality of virtual features associatedwith the virtual display of the virtual object in response to the firstinput, in a direction corresponding to the touch input on the touchsurface of the controller, such that different combinations of virtualfeatures of the plurality of virtual features are displayed in responseto the scrolling.
 11. The method of claim 10, scrolling through theplurality of virtual features in response to the first input alsoincluding: detecting a release of the activation of the manipulationdevice of the controller; and terminating the scrolling of the pluralityof virtual features in response to the detected release.
 12. The methodof claim 1, wherein the first input mode is a physical movement of thecontroller, and the second input mode is a touch input on a touchsurface of the controller, and wherein the selection input is detectedin response to an activation of a manipulation device of the controller.13. The method of claim 12, wherein determining whether to ignore thesecond input or to execute an action in the virtual environment responseto the second input based on a set of previously defined rules includes:ignoring the second input when the touch input is contained within apreviously defined area of the touch surface of the controller or amagnitude of the second input is less than a previously definedthreshold; and executing the action in the virtual environment responseto the second input when the touch input extends beyond the previouslydefined area of the touch surface of the controller or the magnitude ofthe second input is greater than or equal to the previously definedthreshold.
 14. The method of claim 12, adjusting an arrangement of aplurality virtual objects associated with the virtual display of thevirtual object in response to the first input including: scrollingthrough the plurality of virtual features associated with the virtualdisplay of the virtual object in response to the first input, in adirection corresponding to the touch input on the touch surface of thecontroller, such that different combinations of virtual features of theplurality of virtual features are displayed in response to thescrolling; detecting a release of the activation of the manipulationdevice of the controller; and terminating the scrolling of the pluralityof virtual objects in response to the detected release.
 15. A computingdevice, comprising: a memory storing executable instructions; and aprocessor configured to execute the instructions, to cause the computingdevice to: display a virtual environment on a display of a head mountedelectronic device worn by a user and operating in an ambientenvironment; set an anchor point in a virtual display of a virtualobject displayed in the virtual environment in response to detectingselection input received from a controller that is operably coupled tothe head mounted electronic device; receive, from the controller, afirst input implementing a first input mode; adjust an arrangement of aplurality of virtual features associated with the virtual display of thevirtual object in response to the first input, a virtual display area ofthe virtual display being less than a display area needed to display allof the plurality of virtual features simultaneously; receive, from thecontroller, a second input implementing a second input mode, the secondinput mode being different than the first input mode; and determiningwhether to ignore the second input or to execute an action in thevirtual environment response to the second input based on a set ofpreviously defined rules.
 16. The computing device of claim 15, whereinthe first input mode is a touch input on a touch surface of thecontroller, and the second input mode is a physical movement of thecontroller, and wherein, in setting the anchor point, the instructionscause the computing device to: detect an intersection point of a virtualbeam directed from the controller with a portion of the virtual display;and set the anchor point at the detected intersection point in responseto the selection input, the selection input being detected in responseto a detected activation of a manipulation device of the controller. 17.The computing device of claim 16, wherein, in determining whether toignore the second input or execute an action in the virtual environmentresponse to the second input based on a set of previously defined rules,the instructions cause the computing device to: ignore the second inputwhen the physical movement of the controller is within a previouslydefined range; and execute the action in the virtual environmentresponse to the second input when the physical movement of thecontroller extends beyond the previously defined range.
 18. Thecomputing device of claim 16, wherein, in adjusting the plurality ofvirtual features associated with the virtual display of the virtualobject in response to the first input, the instructions cause thecomputing device to: move through the plurality of virtual featuresassociated with the virtual display of the virtual object in response tothe first input, in a direction corresponding to the touch input on thetouch surface of the controller, such that different combinations ofvirtual features of the plurality of virtual features are displayed inresponse to the movement of the plurality of virtual features.
 19. Thecomputing device of claim 18, wherein, in moving through the pluralityof virtual features, the instructions cause the computing device to:sequentially scroll through the plurality of virtual features associatedwith the virtual display of the virtual object, in the directioncorresponding to the touch input on the touch surface of the controller,the touch input; terminate the scrolling in response to a detectedrelease of the touch input on the touch surface of the controller; anddisplay a combination of virtual features, of the plurality of virtualfeatures, on the virtual display of the virtual object, the displayedcombination of virtual features being different from a combination ofvirtual features, of the plurality of virtual features, displayed beforethe scrolling.
 20. The computing device of claim 18, wherein, in movingthrough the plurality of virtual features, the instructions cause thecomputing device to: jump to one or more virtual features, of theplurality of virtual features, corresponding to the first input, thefirst input corresponding to a selection of a virtual content button,the virtual content button corresponding to a set point in a sequentiallisting of the plurality of virtual features; and display a combinationof virtual features, of the plurality of virtual features, on thevirtual display of the virtual object, the displayed combination ofvirtual features being different from a combination of virtual features,of the plurality of virtual features, displayed before the jump.